Florian Müllner [Fri, 13 Feb 2015 19:52:11 +0000 (20:52 +0100)]
panelMenu: Consider vertical margins when computing max-height
When opening a panel menu, we set it's max-height to the available
work-area height to keep menus with scrollable content from growing
outside the monitor. However a menu that extends all the way down
to the bottom edge does not look great either, so also take margins
into account here.
Florian Müllner [Fri, 6 Feb 2015 23:22:47 +0000 (00:22 +0100)]
telepathyClient: Fix a translator comment
Ouch, classy - we are telling translators to use a '24h' time
format for the '12h' time format string.
Luckily, only a handful of translations actually followed the
comment (de,hu,id,is,kk,nb,nl), and most of the corresponding
locales do not support 12-hour format anyway (only is_IS, at
least on Fedora).
Florian Müllner [Fri, 13 Feb 2015 01:03:33 +0000 (02:03 +0100)]
appDisplay: Do not duplicate "New Window" action
We assume that applications that export a 'new-window' action can open
a new window, so we add an appropriate entry to the context menu.
However this duplicates functionality if the application already
exposes the action via the desktop file - don't add our own entry
in that case.
Colin Walters [Fri, 13 Feb 2015 09:27:27 +0000 (04:27 -0500)]
Drop use of libgsystem, move single API call into shell-global.c
See https://mail.gnome.org/archives/desktop-devel-list/2015-February/msg00121.html
We presently only indirectly link to it via this one call; until GLib
gains structured logging, simply import the code to wrap the journal
logging in an introspectable API into Shell.
Rui Matos [Mon, 26 Jan 2015 14:52:10 +0000 (15:52 +0100)]
Add an OSD monitor labeler exposed on DBus
This DBus API is intended to be used by gnome-control-center's
displays panel to show monitor labels.
Each output (i.e. hardware monitor) identified by its
org.gnome.Mutter.DisplayConfig API ID has at most one label. On
mirrored setups, all the labels for outputs corresponding to the same
logical monitor (i.e. showing the same contents in the same mode) are
shown together.
At most, only one DBus client at a time is allowed to show labels.
Cosimo Cecchi [Wed, 4 Feb 2015 20:23:30 +0000 (12:23 -0800)]
StTextureCache: do not monitor files inside GResource
This is wasteful, since GResource does not support file monitoring.
Further, doing so will trigger a fallback code path in GLib that polls
every second in a thread, which is doubly wasteful.
Murray Cumming [Tue, 27 Jan 2015 21:10:45 +0000 (22:10 +0100)]
App Picker: Prevent drag if favorite-apps is locked.
Because there's nothing (in single-monitor setups) that could
take the drop in this case.
* js/ui/appDisplay.js:
AllView._loadApps(), FrequentView._loadApps(): Pass
an isDraggable parameter when creating the AppIcons,
depending on whether the favorite-apps key is locked.
AppIcon._init(): Check for isDraggable in the params and
do not create _draggable if it was specified, to prevent a
drag from starting.
AppIcon.popupMenu(): Check _draggable before trying to call
fakeRelease on it.
* js/ui/dash.js: Dash._createAppItem(): Check AppIcon._draggable
before trying to connect to its signals.
David King [Thu, 11 Dec 2014 15:22:19 +0000 (15:22 +0000)]
dash: Improve feedback when favorite-apps key is locked
In a lockdown scenario, where the favorite-apps GSettings key is not
writable, hide the menu items for adding and removing favorites from the
dash menu. Additionally, reject drops to the dash for DND.
Ray Strode [Thu, 22 Jan 2015 19:00:01 +0000 (14:00 -0500)]
loginDialog: fix reactivity of first user in user list
After the login banner is shown and hidden, the first user
in the user list becomes non-reactive. This is because the
banner is given an opacity of 0, but still allocated.
This commit fixes that by hiding the banner explicitly.
Ray Strode [Thu, 22 Jan 2015 18:39:46 +0000 (13:39 -0500)]
loginDialog: reset greeter proxy on auth prompt reset
Normally when a user uses the login screen to log in, the
login screen gets killed and the user session takes over
the display.
This doesn't happen for wayland sessions, though. Instead,
the login screen gets reset, and the wayland session is started
on another VT.
The greeter proxy object needs to be recreated after this reset,
since it's associated with state no longer coupled to the login
screen after the reset.
This commit moves greeter proxy creation to happen at reset time.
Florian Müllner [Mon, 19 Jan 2015 22:40:07 +0000 (23:40 +0100)]
windowManager: Kill a comment
The code described by the comment was moved away in commit eda27d51,
so it is not misleading at best. It wasn't too useful to begin with,
so kill it off rather than moving it to the correct place ...
Florian Müllner [Thu, 15 Jan 2015 23:13:58 +0000 (00:13 +0100)]
windowManager: Allow moving a window above the top workspace
When using dynamic workspaces, a new workspace will be appended
when moving a window down to the last (empty) workspace. It makes
sense to extend the behavior in the opposite direction, and prepend
a new workspace when moving a window up from the first workspace.
Florian Müllner [Thu, 15 Jan 2015 23:32:27 +0000 (00:32 +0100)]
windowManager: Update active workspace after inserting a new one
New workspaces are inserted by shifting all windows on workspaces
below the insertion position down. As a result, when the new
workspace is inserted before the active one, we end up with
the illusion of a workspace switch. Instead, activate the workspace
on which the windows from the active one ended up.
Florian Müllner [Fri, 16 Jan 2015 00:19:37 +0000 (01:19 +0100)]
windowManager: Don't shift OR windows when inserting a workspace
We are not supposed to mess around with OR windows, so don't try
to shift them to a different workspace. This fixes a warning with
newer versions of mutter.
Florian Müllner [Thu, 15 Jan 2015 22:03:24 +0000 (23:03 +0100)]
windowManager: Split out workspace insertion from thumbnails
We will soon allow to insert a new workspace by other means than
DND in between workspace thumbnails, so move the relevant code
to a new windowManager method.
Takao Fujiwara [Thu, 27 Nov 2014 08:23:01 +0000 (17:23 +0900)]
ibusManager: Disable IBus input sources on password entries
Input method preedit text needs to be disabled on password entries
for security and usability reasons.
IBus 1.5.7 provides the signal set-content-type so that panel UIs can
handle these special purpose input entries:
https://github.com/ibus/ibus/commit/6ca5ddb302c9
Unfortunately IBus versions older than 1.5.10 have a bug which causes
spurious set-content-type emissions when switching input focus that
temporarily lose purpose and hints defeating its intended semantics
and confusing users. We thus don't use it in that case.
Adel Gadllah [Sun, 11 Jan 2015 11:16:40 +0000 (12:16 +0100)]
recorder: Switch to vp9
Currently we have been using the vp8 codec because it was the best unencumbered codec at that time. With vp9 we now have a successor that leads to smaller
files at at the same video quality and has been supported by current browsers
for a while.
With the raise of hidpi and 4K displays we need a better codec that handles
those resolutions better, so switch to vp9.
Cosimo Cecchi [Wed, 7 Jan 2015 10:16:04 +0000 (18:16 +0800)]
search: remove redundant check
We check for (metasNeeded.length == 0) at the beginning of the function,
which is only ever called when when a non-zero number of results is
received back from the provider. Effectively, this means that
(metas.length != metasNeeded.length) will also catch (metas.length == 0)
and print a nicer message to the log.
Cosimo Cecchi [Wed, 7 Jan 2015 09:53:30 +0000 (17:53 +0800)]
search: don't forget to notify caller when failing to ensure actors
The updateSearch() function is called in SearchResults every time new
search hits are available from a search provider; SearchResults will
wait for updateSearch() to complete in a callaback, to update the
overall progress of the search operation.
updateSearch() will call _ensureResultActors(), which will in turn call
getResultMetas() on the search provider, which is an operation that can
fail arbitrarily or return inconsistent data, as it's entirely in the
hands of the search provider.
In case _ensureResultActors() returns a failure, updateSearch() is
currently failing to notify the passed-in callback, which might leave
SearchResults in an inconsistent state: make sure the asynchronous flow
always ends up with a notification to the updateSearch() callback.
windowManager: Make sure to reset the resizePopup after using it
So that we'll recreate it the next time we want to show it. Otherwise,
we'll try to call things on a half-destroyed ResizePopup and end up
causing errors instead of showing the user their resize popup.
window-tracker: Fix pid based window/app association
The lookup table used by get_app_from_window_pid contained only pids of
apps launched by gnome-shell itself, but not pids of apps running before
gnome-shell was (re-)started. Also the pids in that table might not even
be the pid of the process that is actually showing the window if wrapper
scripts are used.
Instead use shell_window_tracker_get_app_from_pid which uses the pids
from the windows themselves.
This removes the only use of launched_pid_to_app which will be removed
in the following commit.
This fixes: https://bugzilla.gnome.org/show_bug.cgi?id=736527
Florian Müllner [Wed, 12 Nov 2014 19:49:24 +0000 (20:49 +0100)]
shellDBus: Add mode parameter to AcceleratorActivated signal
This will allow g-s-d to handle actions differently based on the
current mode - namely, allow the power button when locked, but
make sure to never show any dialogs in that case.
Florian Müllner [Wed, 12 Nov 2014 20:21:44 +0000 (21:21 +0100)]
shellDBus: Change AcceleratorActivated signature
Adding new parameters to the signal currently will break keybindings
until gnome-settings-daemon is updated to the new API as well.
Put additional parameters into a dictionary instead to make future
extensions easier.
Florian Müllner [Wed, 17 Dec 2014 21:57:44 +0000 (22:57 +0100)]
windowManager: Update stacking during workspace switches
When animating workspace switches, windows on the old and new workspaces
are temporarily reparented. If windows are restacked, those windows will
thus be ignored by mutter until meta_switch_workspace_completed() resyncs
the stacking at the end of the animation.
As a result, activating a window on another workspace that is not on top
of the stack is very noticeably a two-step operation of switching workspace
and raising the window. There is a technical reason for that order[0], but
we can avoid the visible disruption by manually syncing the stack during
the switch operation.
Florian Müllner [Thu, 27 Nov 2014 19:46:50 +0000 (20:46 +0100)]
gestures: Restrict actions based on keybindingMode
Just like keybindings and the message tray pointer barrier, gestures
don't always make sense - for instance, swiping up the screen shield
should not trigger the message tray just as the SelectArea action around
the left edge should not open the overview.
To avoid this, restrict gestures based on the current keybinding mode.
Ray Strode [Tue, 11 Nov 2014 14:11:01 +0000 (09:11 -0500)]
loginDialog: use two column view if banner message long
Frequently banner messages are longer than can reasonable
fit in a one column view, which leads to a smooshed layout.
This commit changes the layout to a two column view, with the
banner on the left and the prompt on the right, if the banner
message is long enough that it can't fit well above the prompt.
If there isn't enough space for two columns then we keep the
one column layout but add scrollbars.
Ray Strode [Tue, 11 Nov 2014 14:11:01 +0000 (09:11 -0500)]
loginDialog: display banner message when disable-user-list=true
The login screen supports showing a banner message which admins
can use to mention login rules or disclaimers.
This message only shows up currently if the user list is enabled.
Most people who want to show a banner message also want to disable
the user list.
This commit moves the banner message to display when the user is
prompted for login credentials instead of when showing the user
list. It also adds a scrollbar if the message is too long.
Ray Strode [Mon, 10 Nov 2014 19:36:07 +0000 (14:36 -0500)]
loginDialog: allocate children manually
The login screen is pretty custom full screen container and the standard
layout managers aren't really a good fit for the kind of layout that's
happening. This will be even more problematic with upcoming changes
to login banners, so we need to switch techniques.
This commit moves login dialog over to using a custom allocate handler
that has specific domain knowledge of the parts of the login screen
and where they go.
Calendar: ignore timeouts starting the calendar-server
In certain cases the timeout for starting the calendar helper can
be reached but the calendar helper still loads fine. If so, just
ignore the timeout and wait until we get a notification from
dbus of the successful start.
calendar-server: activate evolution-source-registry manually at startup
g_dbus_proxy_new() (and library calls that wrap it) has an hardcoded
timeout of 25 seconds, which is insufficient for starting up e-s-r
in certain setups. Avoid a timeout error by starting the service
manually with a longer timeout before hand.
Also demote the error to a warning + exit failure instead of
a crash, to avoid triggering abrt reports.
Florian Müllner [Sat, 29 Nov 2014 00:25:04 +0000 (00:25 +0000)]
app: Use StIcon as icon_texture when loading from a GIcon
Themes - namely the HighContrast one - may now request symbolic
icons rather than fullcolor ones. In order to have recoloring
work as expected in that case, we will need a theme node to pick
up colors from - using an StIcon instead of manually loading a
texture from the cache gives us that for free, so do that.
Florian Müllner [Sat, 29 Nov 2014 14:53:36 +0000 (14:53 +0000)]
st-theme-node: Add support for -st-icon-style property
GTK+ added support for a -gtk-icon-style property in themes to
enforce a particular icon style. Do the same for shell themes
with an -st-icon-style property, with the same set of possible
values as the GTK+ variant:
'requested' - use symbolic or fullcolor icon depending on the
icon name (default)
'regular' - enforce fullcolor icons
'symbolic' - enforce symbolic icons
Florian Müllner [Sat, 29 Nov 2014 13:37:19 +0000 (13:37 +0000)]
main: Add support for -high-contrast theme variants
While the default Shell style is fairly decent with regard to
accessibility requirements, having the ability to tweak certain
aspects where the regular style works less well is still useful.
For this purpose, try to load a -high-contrast theme variant of
the default stylesheet when a high-contrast theme is requested
(as determined by the GTK+ theme name).
overview: Set _shown before calling _animateNotVisible
_hideDone checks _shown to determine if anything has shown the overview
while we hid it, and if so, shows the overview forward just in case.
In a local patch that called _hideDone immediately inside _hide for
testing, this broke. While we don't actually depend on this anywhere,
it doesn't hurt so that the next person to hack this up (perhaps me!)
doesn't get stuck debugging it for 20 minutes.
Florian Müllner [Thu, 27 Nov 2014 14:24:49 +0000 (14:24 +0000)]
main: Fix unsetting of custom stylesheets
Since moving to a GFile based API in commit 642bf2b7782819,
setThemeStylesheet() no longer accepts %null to revert to
the default theme. We should have some way to revert to the
default and the least intrusive option is to return to the
old behavior, so do that.